// 书写用户管理的store
import {pageList,addLeader,updateLeader,toUserDispatchRole,deleteLeader,deleteUserList,useUserGetRole} from '@/api/management'


const state ={
    userListInfo:{},
    rolesInfo:{}
}

const mutations ={
    SET_USERLISTINFO:(state,userListInfo)=>{
        state.userListInfo = userListInfo
    },
    SET_ROLESINFO:(state,rolesInfo)=>{
        state.rolesInfo = rolesInfo
    }
}

const actions ={
    // 获取分页列表数据
    async getPageList ({commit},{page,limit,username}){
        try {
           const result = await  pageList(page,limit,username)
        //    console.log(result,'pagelist')
           commit('SET_USERLISTINFO',result)
        } catch (error) {
            return Promise.reject(error)
        }
    },
    // 新增管理用户
    async reqAddLeader({commit},userControl){
        try {
            await addLeader(userControl)
            // 后台知道成功前台并不知使用async函数特点
            return 'ok'
        } catch (error) {
            // console.log(error)
             return Promise.reject(error)
        }
    },
     // 修改管理用户
     async reqUpdateLeader({commit},userControl){
        try {
            await updateLeader(userControl)
            // 后台知道成功前台并不知使用async函数特点
            return 'ok'
        } catch (error) {
             return Promise.reject(error)
        }
    },
    // 根据用户获取角色
    async reqUserGetRole({commit},userId){
        try {
          const result = await useUserGetRole(userId)
          console.log(result,'roles')
          commit('SET_ROLESINFO',result)
        } catch (error) {
            return Promise.reject(error)
        }
    },
    // 给用户设置角色
    async reqUserDispatchRole ({commit},{userId,roleId}){
        try {
            await toUserDispatchRole(userId,roleId)
            return 'ok'
        } catch (error) {
            // console.log(error)
            return Promise.reject(error)
        }
    },
    // 删除用户
    async reqDeleteLeader({commit},id){
        try {
            await deleteLeader(id)
            return 'ok'
        } catch (error) {
             return Promise.reject(error)
        }
    },
    // 删除多个数据
    async reqDeleteUserList({commit,dispatch},idList){
        console.log(idList,'idlist')
        // 使用promiseall方法
    let arr = []
    
    idList.forEach(item =>{
        arr.push(dispatch('reqDeleteLeader'),item.id)
    })

    try {
        await Promise.all(arr)
        return 'ok'
    } catch (error) {
         console.log(error)
        return Promise.reject(error)
    }
    
        // try {
        //     // await deleteUserList(idList)
        //     idList.forEach(item =>{
        //        dispatch('reqDeleteLeader',item.id)
        //     })
        //     // 遍历使用上边的接口
        //    return 'ok'
        // } catch (error) {
        //     return Promise.reject(error)
        // }
    }
}

const getters ={
    // 计算总数
    total(state){
     return state.userListInfo.total 
    },
    // 计算页面列表数据
    pageList(state){
      return state.userListInfo.items || []
    },
    // 选中的角色数据
    checkedRoles(state){
        return state.rolesInfo.assignRoles || []
    },
    // 所有的角色数据
    rolesList(state){
        return state.rolesInfo.allRolesList || []
    }

}


export default {
    namespaced: true,
    state,
    mutations,
    actions,
    getters
  }
  